<html>
<!-- Head tag -->
<head><meta name="generator" content="Hexo 3.9.0">

    <meta name="google-site-verification" content="uxeL3ivCjEkmCPEWS1owNMkK9VHPxOMCjcaMHaQ38Bo">
    <meta name="google-site-verification" content="yU7d61qsV4eAvSOazt85VJMYfiEDjZjcaXwyQKGP5Bc">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	
	
		<link href="/favicon.ico" rel="icon">
	 
      <title>Connect your Android phone with your Mac via KDE Connect | Inoki in KDE</title>
	<link rel="stylesheet" href="/css/font-awesome/css/font-awesome.css">
	<link rel="stylesheet" href="/css/style.css">
	<link rel="stylesheet" href="/css/highlight.css">
	
	
<!-- Google Analytics -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-108089983-2"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-108089983-2');
</script>

<!-- End Google Analytics -->

<!-- Google Adsense -->
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
  (adsbygoogle = window.adsbygoogle || []).push({
    google_ad_client: "ca-pub-2713518338457470",
    enable_page_level_ads: true
  });
</script>


</head>
<body>
	<div id="site" class="site">
		<div id="sidebar" class="sidebar">
			<header id="header" class="site-header">
	<div class="site-branding">
		<h1 class="site-title">
			
				<a href="/images/avatar-small.png" class="avatar-circle"><img src="/images/avatar-small.png" /></a>
			
			<a href="/" rel="home">Inoki ❤️ KDE</a></h1>
		<p class="site-description"></p>
		<button class="secondary-toggle font-asesome-icon">Menu and widgets</button>
	</div>
</header>
<div id="secondary" class="secondary">
	<nav class="main-navigation">
                         <ul id="menu-demo-menu" class="nav-menu">
						 
							<li class="menu-item"><a href="/">Home</a></li>
						
							<li class="menu-item"><a href="/archives">Archives</a></li>
						
							<li class="menu-item"><a href="/about">AboutMe</a></li>
						
                         </ul>
    </nav>
	
		<aside class="widget social-navigation">
    <ul>
        <li>
            <a href="http://twitter.com/IIInoki">
                <i class="fa fa-twitter" aria-hidden="true"></i>
            </a>
        </li>
        <li>
            <a href="https://www.facebook.com/noki.noki.10">
                <i class="fa fa-facebook-square" aria-hidden="true"></i>
            </a>
        </li>
        <li>
            <a href="https://github.com/inokinoki">
                <i class="fa fa-github" aria-hidden="true"></i>
            </a>
        </li>
        <li>
            <a href="https://linkedin.com/in/weixuan-xiao-032725108/">
                <i class="fa fa-linkedin" aria-hidden="true"></i>
            </a>
        </li>
    </ul>
</aside>
	
		
<aside class="widget">
		<h3 class="widget-title">Recent Posts</h3>		
		<ul>
			
          <li>
            <a href="/2019/09/01/KDE-Connect-macOS-GSoC-Final-Release/">KDE Connect macOS Release</a>
          </li>
        
          <li>
            <a href="/2019/07/24/DBus/">DBus connection on macOS</a>
          </li>
        
          <li>
            <a href="/2019/07/18/KDE-Connect-macOS-plugin-notification/">Enable notification plugin in KDE Connect on macOS</a>
          </li>
        
          <li>
            <a href="/2019/07/16/KDE-Connect-macOS/">Connect your Android phone with your Mac via KDE Connect</a>
          </li>
        
          <li>
            <a href="/2019/05/26/Craft-packager/">KDE Craft Packager on macOS</a>
          </li>
        
		</ul>
	</aside>


	
		
  <aside class="widget">
		<h3 class="widget-title">Tag Cloud</h3>
        <a href="/tags/Craft/" style="font-size: 13.33px;">Craft</a> <a href="/tags/DBus/" style="font-size: 10px;">DBus</a> <a href="/tags/GSoC/" style="font-size: 16.67px;">GSoC</a> <a href="/tags/Inoki/" style="font-size: 10px;">Inoki</a> <a href="/tags/KDE-Connect/" style="font-size: 16.67px;">KDE Connect</a> <a href="/tags/macOS/" style="font-size: 20px;">macOS</a>
    </aside>

	
</div>

		</div>
		<div id="content" class="site-content">
			<main id="main" class="site-main" role="main">
				
<article class="hentry ">
		
		
			<header class="entry-header">
				<h2 class="entry-title"><a class="post-title-link" href="/2019/07/16/KDE-Connect-macOS/" rel="bookmark">Connect your Android phone with your Mac via KDE Connect</a></h2>	
			</header>
		
		<!-- .entry-header -->
		<div class="entry-content">
			
				<p>Have you ever heard <a href="https://www.apple.com/macos/continuity/" target="_blank" rel="noopener">Continuity</a>, the solution of Apple which provides one seamless experience between your iPhone and your Mac?</p>
<img src="/2019/07/16/KDE-Connect-macOS/apple-continuity.png" title="Apple Continuity">
<p>You may be surprised, “Woohoo, it’s amazing but I use my OnePlus along with my Mac.” With my GSoC 2019 project, you can connect your Mac and your Android phone with <code>KDE Connect</code>!</p>
<p>And you can even connect your Mac with your Linux PC or Windows PC (Thanks to Piyush, he is working on optimizing experience of <code>KDE Connect</code> on Windows).</p>
<h1 id="Installation-instruction"><a href="#Installation-instruction" class="headerlink" title="Installation instruction"></a>Installation instruction</h1><ol>
<li><p>You can download <code>KDE Connect</code> Nightly Build for macOS from KDE Binary Factory: <a href="https://binary-factory.kde.org/view/MacOS/job/kdeconnect-kde_Nightly_macos/" target="_blank" rel="noopener">https://binary-factory.kde.org/view/MacOS/job/kdeconnect-kde_Nightly_macos/</a>. But notice that it’s not yet a stable version, and it requires that you have permission to run application from non-certificated developer. We’ll release a stable one next month on August.</p>
</li>
<li><p>Otherwise you can build your own version. Please follow the instructions on <a href="https://community.kde.org/KDEConnect/Build_MacOS" target="_blank" rel="noopener">KDE Connect Wiki</a>. If you’re using <code>macOS 10.13</code>, <code>MacOS X 10.12</code> or below, we recommend that you build your own <code>KDE Connect</code> because our Binary Factory are building applications for only <code>macOS 10.14</code> or above.</p>
</li>
</ol>
<p>You’ll finally get a <code>DMG</code> image file in both 2 ways.</p>
<img src="/2019/07/16/KDE-Connect-macOS/dmg.png" title="KDE Connect DMG image">
<p>Just click on it, mount it and drap <code>kdeconnect-indicator</code> into <code>Applications</code> folder. </p>
<p>Open <code>kdeconnect-indicator</code> and your magic journey with <code>KDE Connect</code> for macOS begins!</p>
<h1 id="Use"><a href="#Use" class="headerlink" title="Use"></a>Use</h1><p>After installation, you can see an icon of <code>kdeconnect-indicator</code> in the Launchpad.</p>
<img src="/2019/07/16/KDE-Connect-macOS/launchpad.png" title="KDE Connect in LaunchPad">
<p>Click it to open. If everything is ok, you will see an <code>KDE Connect</code> icon in your system tray.</p>
<img src="/2019/07/16/KDE-Connect-macOS/trayicon.png" title="KDE Connect in System Tray">
<p>Click the icon -&gt; Configure to open configuration window. Here you can see discovered devices and paired devices.</p>
<img src="/2019/07/16/KDE-Connect-macOS/configuration.png" title="KDE Connect Configuration Window">
<p>You can enable or disable functions in this window.</p>
<p>Currently, you can do these from your Android phone:</p>
<ul>
<li>Run predefined commands on your Mac from connected devices.</li>
<li>Check your phones battery level from the desktop</li>
<li>Ring your phone to help finding it</li>
<li>Share files and links between devices</li>
<li>Control the volume of your Mac from the phone</li>
<li>Keep your Mac awake when your phone is connected</li>
<li>Receive your phone notifications on your desktop computer (this function is achieved but not yet delivered, you can follow <a href="/2019/07/18/KDE-Connect-macOS-plugin-notification/">this post</a> to enable it manually)</li>
</ul>
<p>I’m trying to make more plugins work on macOS. Good luck to my GSoC project :)</p>
<h1 id="Acknowledgement"><a href="#Acknowledgement" class="headerlink" title="Acknowledgement"></a>Acknowledgement</h1><p>Thanks to KDE Community and Google, I could start this Google Summer of Code project this summer.</p>
<p>Thanks to members in KDE Connect development. Without them, I cannnot understand the mechanism and get it work on macOS so quickly :)</p>
<h1 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h1><p>If you have any question, <a href="https://community.kde.org/KDEConnect" target="_blank" rel="noopener">KDE Connect Wiki</a> may be helpful. And you can find a bug tracker there.</p>
<p>Don’t be hesitated to join our Telegram Group or IRC channel if you’d like to bring more exciting functions into <code>KDE Connect</code>: </p>
<ul>
<li><a href="https://t.me/joinchat/BRUUN0bwMhNfn8FIejA-nw" target="_blank" rel="noopener">Telegram</a></li>
<li>IRC (#kdeconnect)</li>
<li>matrix.org (#freenode_#kdeconnect:matrix.org)</li>
</ul>
<p>I wish you could enjoy the seamless experience provided by <code>KDE Connect</code> for macOS and your Android Phone!</p>

			
		</div><!-- .entry-content -->
		
		
			<div class="entry-comments">
				 
      <div id="disqus_thread"></div>
    <script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'inokinoki-kde'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
      var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
      dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
  </script>
  <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
  
  
   
			</div>
		
		<footer class="entry-footer">
			<span class="posted-on font-asesome-icon">
	<a href="" rel="bookmark">
	<time class="updated" datetime="2019-07-16T11:57:22.000Z">2019-07-16</time>
	</a>
</span>

	<span class="cat-links font-asesome-icon">
		
				<a href="/categories/KDE-Connect/" rel="category tag">KDE Connect</a>
		
				<a href="/categories/KDE-Connect/macOS/" rel="category tag">macOS</a>
		
	</span>


	<span class="tags-links font-asesome-icon">
	
		<a href="/tags/macOS/" rel="category tag">macOS</a>
    
		<a href="/tags/KDE-Connect/" rel="category tag">KDE Connect</a>
    
		<a href="/tags/GSoC/" rel="category tag">GSoC</a>
    
</span>
		

    <span class="eye font-asesome-icon" >
         <span id="/2019/07/16/KDE-Connect-macOS/" class="leancloud_visitors" data-flag-title="Connect your Android phone with your Mac via KDE Connect">
        
        </span>
    </span>

			<br/>
			<a href="https://www.vultr.com/?ref=7746405"><img src="https://www.vultr.com/media/banner_1.png" width="728" height="90"></a>
		</footer><!-- .entry-footer -->
</article>
<div class="misc">
    <a href="#main"><span class="top font-asesome-icon">Top</span></a>
</div>
			</main>
		</div>
		<footer id="colophon" class="site-footer">
			<div class="site-info">
				<span>powered by <a href="https://hexo.io/">Hexo</a>&nbsp;&nbsp; theme by <a href="https://github.com/Troy-Yang/hexo-theme-twentyfifteen-wordpress">Troy</a> &nbsp; inspired by <a href="https://wordpress.org/themes/">wordpress</a></span>
			</div><!-- .site-info -->
		</footer>
	</div>
	<!-- <div id="infinite-footer">
            <div class="container">
                <div class="blog-info">
                    <a id="infinity-blog-title" href="#" rel="home" title="Scroll back to top">
                         Happy Coding, Happy Life!
                    </a>
                </div>
                <div class="blog-credits">
					<span>蜀ICP备15004900号-1</span>
                </div>
            </div>
        </div>#infinite-footer -->
    <!-- After footer scripts -->
    <script src="/js/jquery-3.1.1.min.js"></script>
<script src="/js/main.js"></script>

    <!--referring from https://notes.wanghao.work/2015-10-21-%E4%B8%BANexT%E4%B8%BB%E9%A2%98%E6%B7%BB%E5%8A%A0%E6%96%87%E7%AB%A0%E9%98%85%E8%AF%BB%E9%87%8F%E7%BB%9F%E8%AE%A1%E5%8A%9F%E8%83%BD.html -->
    <script src="https://cdn1.lncld.net/static/js/av-core-mini-0.6.1.js"></script>
    <script>
        AV.initialize("QC5aQ8pUah279L1skNerLRTU-gzGzoHsz", "mhvEFRRIuPHtjNgOXAe9axsk");
    </script>
    <script>
        function showTime(Counter) {
            var query = new AV.Query(Counter);
            $(".leancloud_visitors").each(function () {
                var url = $(this).attr("id").trim();
                query.equalTo("url", url);
                query.find({
                    success: function (results) {
                        if (results.length == 0) {
                            var content = $(document.getElementById(url)).text() + ': 0';
                            $(document.getElementById(url)).text(content);
                            return;
                        }
                        for (var i = 0; i < results.length; i++) {
                            var object = results[i];
                            //var content = $(document.getElementById(url)).text() + ': ' + object.get('time');
                            $(document.getElementById(url)).text(object.get('time'));
                        }
                    },
                    error: function (object, error) {
                        console.log("Error: " + error.code + " " + error.message);
                    }
                });
            });
        }
        function addCount(Counter) {
            var Counter = AV.Object.extend("Counter");
            url = $(".leancloud_visitors").attr('id').trim();
            title = $(".leancloud_visitors").attr('data-flag-title').trim();
            var query = new AV.Query(Counter);
            query.equalTo("url", url);
            query.find({
                success: function (results) {
                    if (results.length > 0) {
                        var counter = results[0];
                        counter.fetchWhenSave(true);
                        counter.increment("time");
                        counter.save(null, {
                            success: function (counter) {
                                //var content = $(document.getElementById(url)).text() + ': ' + counter.get('time');
                                // remove ': '
                                $(document.getElementById(url)).text(counter.get('time'));
                            },
                            error: function (counter, error) {
                                console.log('Failed to save Visitor num, with error message: ' + error.message);
                            }
                        });
                    } else {
                        var newcounter = new Counter();
                        newcounter.set("title", title);
                        newcounter.set("url", url);
                        newcounter.set("time", 1);
                        newcounter.save(null, {
                            success: function (newcounter) {
                                console.log("newcounter.get('time')=" + newcounter.get('time'));
                                var content = $(document.getElementById(url)).text() + ': ' + newcounter.get('time');
                                // remove ': '
                                $(document.getElementById(url)).text(newcounter.get('time'));
                            },
                            error: function (newcounter, error) {
                                console.log('Failed to create');
                            }
                        });
                    }
                },
                error: function (error) {
                    console.log('Error:' + error.code + " " + error.message);
                }
            });
        }
        $(function () {
            var Counter = AV.Object.extend("Counter");
            if ($('.leancloud_visitors').length == 1) {
                addCount(Counter);
            } else if ($('.post-title-link').length > 1) {
                showTime(Counter);
            }
        });
    </script>
    

</body>
</html>